﻿using System.Collections;

namespace ProxyPattern;
/// <summary>
/// 代理模式
/// </summary>
public class ProxyPatternClass
{
    public static void testMain()
    { 
        var list = new MyList();
        list.Add(1);
        list.Add(2);
        list.Add(3);
        list.Add(4);

    }   
}

public class MyList : IList<int>
{
    private IList<int> _target = new List<int>();

    public int this[int index] { get => _target[index]; set => _target[index] = value; }

    public int Count => _target.Count;

    public bool IsReadOnly => _target.IsReadOnly;

    public void Add(int item)
    {
        if (item % 2 == 0)
        {
            _target.Add(item);
        }
    }

    public void Clear()
    {
        _target.Clear();
    }

    public bool Contains(int item)
    {
        return _target.Contains(item);
    }

    public void CopyTo(int[] array, int arrayIndex)
    {
        _target.CopyTo(array, arrayIndex);
    }

    public IEnumerator<int> GetEnumerator()
    {
        return _target.GetEnumerator();
    }

    public int IndexOf(int item)
    {
        return _target.IndexOf(item);
    }

    public void Insert(int index, int item)
    {
        _target.Insert(index, item);
    }

    public bool Remove(int item)
    {
        return _target.Remove(item);
    }

    public void RemoveAt(int index)
    {
        _target.RemoveAt(index);
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return ((IEnumerable)_target).GetEnumerator();
    }
}